/**
 * Created by liaoshengjun on 2017/9/7.
 */

BUI.use('common/page');
BUI.use([ 'common/search', 'bui/overlay', 'bui/grid', 'bui/data','bui/form'],
    function(Search, Overlay, Grid, Data, Form) {
        var privileges=sessionStorage.getItem('privileges');
        var privilegeList=privileges.split(',');
        var flag=true;
        var addPrivilege=false;
        if (privilegeList.length>0) {
            for (var i = 0; i < privilegeList.length; i++) {
                if (privilegeList[i] == 'saveRole') {
                    addPrivilege = true;
                    break;
                }
            }
        }
        // 查询表单
        var form = new Form.Form({
            srcNode : '#searchForm'
        }).render();
        // 定义表头
        columns = [
            {
                title : 'id',
                dataIndex : 'roleId',
                visible : false
            },
            {
                title : '角色',
                dataIndex : 'roleName',
                elCls : 'center',
                width : 120
            },
            {
                title : '描述',
                dataIndex : 'desc',
                elCls : 'center',
                width : 200
            },
            {
                title : '角色菜单权限',
                dataIndex : 'menus',
                elCls : 'center',
                width : 400
            },
            {
                title : '角色按钮权限',
                dataIndex : 'privileges',
                elCls : 'center',
                width : 200
            },
            {
                title : '角色渠道查询权限',
                dataIndex : 'channelData',
                elCls : 'center',
                width : 200
            }

        ];
        // 编辑
        var editing = new Grid.Plugins.DialogEditing({
                contentId : 'content',
                triggerCls : 'btn-edit',
                editor : {
                    title : '新增角色',
                    width : 600
                }
            }),
        // 获取数据
        store = new BUI.Data.Store({
            url : 'listRole',
            pageSize : 20,
            autoLoad : true,
            remoteSort : true
        });
        // 获取表格对象
        if(true){
            gridCfg = Search.createGridCfg(columns, {
                plugins : [ editing,Grid.Plugins.CheckSelection ],
                tbar : { // 添加
                    items : [ {
                        btnCls : 'button button-small',
                        text : '<i class="icon-plus"></i>添加',
                        listeners : {
                            'click' : addFunction
                        }
                    }, {
                        btnCls : 'button button-small',
                        text : '<i class="icon-refresh"></i>刷新',
                        listeners : {
                            'click' : refreshFunction
                        }
                    }]
                }
            });
        }else{
            gridCfg = Search.createGridCfg(columns, {
                plugins : [ Grid.Plugins.CheckSelection ],
                tbar : {
                    items : [{
                        btnCls : 'button button-small',
                        text : '<i class="icon-refresh"></i>刷新',
                        listeners : {
                            'click' : refreshFunction
                        }
                    }]
                }
            });
        }
        // 添加记录
        function addFunction() {
            $.getJSON('showAllResources',function (resources) {
                var privilegeArray=resources.privileges;
                var channelData=resources.channelData;
                var menus=resources.menus;
                var array1=[];
                for(var i=0;i<privilegeArray.length;i++){
                    array1[i]={text:privilegeArray[i].text,value:privilegeArray[i].keyId};
                }
                var array2=[];
                for(var i=0;i<channelData.length;i++){
                    array2[i]={text:channelData[i].text,value:channelData[i].keyId};
                }
                BUI.use([ 'bui/picker','bui/list'],
                    function(Picker,List) {
                        var Picker = BUI.Picker,
                            List = BUI.List;
                        var items1 = array1,
                            list1 = new List.Listbox({ //使用可勾选的列表
                                elCls:'bui-select-list',
                                items : items1
                            }),
                            picker = new Picker.ListPicker({
                                trigger : '#privileges',
                                valueField : '#privilegeIds', //如果需要列表返回的value，放在隐藏域，那么指定隐藏域
                                width:200,  //指定宽度
                                hideEvent : '', //清除点击列表时隐藏，因为需要选中多个
                                children : [list1] //配置picker内的列表
                            });
                        picker.render();
                    }
                );
                BUI.use([ 'bui/picker','bui/list'],
                    function(Picker,List) {
                        var Picker = BUI.Picker,
                            List = BUI.List;
                        var items = array2,
                            list2 = new List.Listbox({ //使用可勾选的列表
                                elCls:'bui-select-list',
                                items : items
                            }),
                            picker2 = new Picker.ListPicker({
                                trigger : '#channelData',
                                valueField : '#channelDataIds', //如果需要列表返回的value，放在隐藏域，那么指定隐藏域
                                width:200,  //指定宽度
                                hideEvent : '', //清除点击列表时隐藏，因为需要选中多个
                                children : [list2] //配置picker内的列表
                            });
                        picker2.render();
                    }
                );
                if(flag){
                    BUI.use('bui/tree',function (Tree) {
                        var data = [];
                        for(var i=0;i<menus.length;i++){
                            var childMenus=menus[i].items;
                            var children=[];
                            for(var j=0;j<childMenus.length;j++){
                                children[j]={text : childMenus[j].text,id : childMenus[j].keyId};
                            }
                            data[i]={text : menus[i].text,id : menus[i].keyId,expanded : false,children :children};
                        }
                        //由于这个树，不显示根节点，所以可以不指定根节点

                        var tree = new Tree.TreeList({
                            render : '#menus',
                            nodes : data,
                            checkType: 'all', //checkType:勾选模式，提供了4种，all,onlyLeaf,none,custom
                            cascadeCheckd : false, //不级联勾选
                            showLine : true //显示连接线
                        });
                        tree.render();
                        flag=false;
                        tree.on('checkedchange',function(ev){
                            var checkedNodes = tree.getCheckedNodes();
                            var str = '';
                            var ids='';
                            BUI.each(checkedNodes,function(node){
                                str += node.text + ',';
                                ids += node.id + ','
                            });
                            $('.log').text(str);
                            $('#menuIds').attr('value',ids);
                        });
                    });
                }
                var newData = {roleName :'请填写角色名'};
                editing.add(newData);
            });
        }
        // 刷新
        function refreshFunction() {
            search.load();
        }
        // 查询
        search = new Search({
            store : store,
            autoSearch : true,
            gridCfg : gridCfg
        });
        grid = search.get('grid');
        // 编辑提交
        editing.on('accept', function(ev) {
            var record = editing.get('record');
            if (record.hasOwnProperty("b"))
                delete record["b"];
            if (record.hasOwnProperty(""))
                delete record[""];
            var saveUrl = record["roleId"] === "" ? 'addRole'
                : 'updateRole';
            jQuery.ajax({
                type : 'POST',
                url : saveUrl,
                dataType : 'json',
                contentType : 'application/json;charset=UTF-8',
                data : JSON.stringify(record),
                complete : function(data) {
                    if (data.responseText == "success") { // 删除成功
                        search.load();
                    } else { // 删除失败
                        BUI.Message.Alert('保存失败！');
                    }
                }
            });
        });
    });